package com.mogist.hqc.module.product.ui

import android.content.Intent
import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter
import com.mogist.hqc.R
import com.mogist.hqc.base.BaseMVPFragment
import com.mogist.hqc.entitys.BaseModel
import com.mogist.hqc.entitys.response.MainProductListVo
import com.mogist.hqc.entitys.response.MainProductVo
import com.mogist.hqc.module.product.adapter.Product0Adapter
import com.mogist.hqc.module.product.contract.Product0Contract
import com.mogist.hqc.module.product.presenter.Product0Presenter
import com.mogist.hqc.mvp.HttpDto
import com.mogist.hqc.util.Constant
import kotlinx.android.synthetic.main.activity_comment_list.*
import kotlinx.android.synthetic.main.fragment_order.*
import kotlinx.android.synthetic.main.fragment_order.mSwipeToLoadLayout
import kotlinx.android.synthetic.main.fragment_order.swipe_target
import talex.zsw.basecore.view.other.swipetoloadlayout.OnLoadMoreListener
import talex.zsw.basecore.view.other.swipetoloadlayout.OnRefreshListener
import talex.zsw.basecore.view.recyleview.DividerItemDecoration
import talex.zsw.basecore.view.recyleview.SampleFooter
import talex.zsw.basecore.view.recyleview.SampleHeader

/**
 * 作用：玩家产品
 * 作者：赵小白 email:vvtale@gmail.com  
 * 修改人：
 * 修改时间：
 * 修改备注：
 */
class Product0Fragment : BaseMVPFragment<Product0Contract.Presenter>(), Product0Contract.View, OnRefreshListener, OnLoadMoreListener
{
    private var position = 0

    override fun initArgs(bundle: Bundle?)
    {
        bundle?.getInt("position")
                ?.let {
                    position = it
                }
    }

    override fun initView(bundle: Bundle?)
    {
        setContentView(R.layout.fragment_product)
        mPresenter = Product0Presenter(this)
    }

    override fun initData()
    {
        initRecyclerView()
    }

    override fun onVisible()
    {
        if (adapter.data.isEmpty())
        {
            getData(false)
        }
    }

    private val adapter = Product0Adapter()

    private fun initRecyclerView()
    {
        adapter.setOnItemClickListener { adapter, view, position ->
            if (!isFastClick)
            {
                val vo = adapter.getItem(position) as MainProductVo
                val intent = Intent(activity, ProductDetailActivity::class.java)
                intent.putExtra("id", vo.id)
                start(intent)
            }
        }
        adapter.emptyView = SampleHeader(activity, swipe_target.width, swipe_target.height)
        adapter.isUseEmpty(false)
        adapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN)
        swipe_target.addItemDecoration(DividerItemDecoration(DividerItemDecoration.VERTICAL_LIST,
                                                             R.color.transparent))
        swipe_target.layoutManager = LinearLayoutManager(activity)
        swipe_target.adapter = adapter
        // mRecyclerView.isNestedScrollingEnabled = false
        mSwipeToLoadLayout.setOnRefreshListener(this)
        mSwipeToLoadLayout.setOnLoadMoreListener(this)
        mSwipeToLoadLayout.isLoadMoreEnabled = true
        mSwipeToLoadLayout.isRefreshEnabled = true
    }

    // --------------- 数据获取 ---------------
    override fun onDestroy()
    {
        super.onDestroy()
        adapter.removeAllFooterView()
        sampleFooter = null
    }

    override fun getData(silence: Boolean)
    {
        adapter.removeAllFooterView()
        disLoading()
        val body = BaseModel(true)
        body.page = page.toString()
        mPresenter.getData(HttpDto(Constant.MAIN_PRODUCT, body).setType(HttpDto.GET).setErrorTitle("获取玩家产品列表失败"))
    }

    var sampleFooter: SampleFooter? = null
    override fun bindData(data: MainProductListVo)
    {
        adapter.isUseEmpty(true)
        if (data.list != null && data.list.isNotEmpty())
        {
            if (page == 1)
            {
                adapter.replaceData(data.list)
            }
            else
            {
                adapter.addData(data.list)
            }
            if (data.pages == page)
            {
                sampleFooter
                        ?: let {
                            sampleFooter = SampleFooter(activity)
                        }
                adapter.setFooterView(sampleFooter)
                mSwipeToLoadLayout.isLoadMoreEnabled = false
            }
            page++
        }
        else
        {
            if (page == 1)
            {
                adapter.replaceData(arrayListOf())
                mSwipeToLoadLayout.isLoadMoreEnabled = false
            }
        }
    }

    private var page = 1
    override fun disLoading()
    {
        mSwipeToLoadLayout.isLoadingMore = false
        mSwipeToLoadLayout.isRefreshing = false
    }

    override fun onRefresh()
    {
        adapter.removeAllFooterView()
        page = 1
        mSwipeToLoadLayout.isLoadMoreEnabled = true
        mSwipeToLoadLayout.isRefreshEnabled = true
        getData(true)
    }

    override fun onLoadMore()
    {
        getData(true)
    }
}